import {difference} from 'lodash' 
// 这是lib.dom.d.ts的声明文件

/////////////////////////////
/// Window APIs
/////////////////////////////

// interface AddEventListenerOptions extends EventListenerOptions {
//     once?: boolean;
//     passive?: boolean;
//     signal?: AbortSignal;
// }

// interface AddressErrors {
//     addressLine?: string;
//     city?: string;
//     country?: string;
//     dependentLocality?: string;
//     organization?: string;
//     phone?: string;
//     postalCode?: string;
//     recipient?: string;
//     region?: string;
//     sortingCode?: string;
// }

// interface AesCbcParams extends Algorithm {
//     iv: BufferSource;
// }

// interface AesCtrParams extends Algorithm {
//     counter: BufferSource;
//     length: number;
// }

// interface AesDerivedKeyParams extends Algorithm {
//     length: number;
// }

// interface AesGcmParams extends Algorithm {
//     additionalData?: BufferSource;
//     iv: BufferSource;
//     tagLength?: number;
// }



// 这是DefinitelyTyped 提供的声名文件
// type InexactPartial<T> = { [K in keyof T]?: T[K] | undefined };

// // Any prop that has a default prop becomes optional, but its type is unchanged
// // Undeclared default props are augmented into the resulting allowable attributes
// // If declared props have indexed properties, ignore default props entirely as keyof gets widened
// // Wrap in an outer-level conditional type to allow distribution over props that are unions
// type Defaultize<P, D> = P extends any ? string extends keyof P ? P
//     :
//         & Pick<P, Exclude<keyof P, keyof D>>
//         & InexactPartial<Pick<P, Extract<keyof P, keyof D>>>
//         & InexactPartial<Pick<D, Exclude<keyof D, keyof P>>>
//     : never;

// type ReactManagedAttributes<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D>
//     : P;
